<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <p>数组变异1.通过下标修改数组的一整项</p>
    <p>数组变异2.直接修改数组长度</p>
    <p>对象变异1.新增对象属性</p>
    <p>对象变异2.删除对象属性</p>
    <p v-for="num in arr1" :key="num">{{num}}</p>
    <button @click="change1">修改数组1</button>
    <hr>
    <p v-for="(item, index) in arr2" :key="index+100">
      {{item.name}}---{{item.price}}
    </p>
    <button @click="change2">修改数组2</button>
    <hr>
    <p v-for="num in arr1" :key="num+'arr'">{{num}}</p>
    <button @click="changeLength">修改长度</button>
    <hr>
    <p v-for="(val, key, index) in obj1">
      {{index+1}}.{{key}}:{{val}}
    </p>
    <button @click="add">新增属性</button>
    <button @click="change3">修改属性</button>
    <button @click="del">删除属性</button>
  </div>
  <script src="../vue.js"></script>
  <script>
    let vm = new Vue({
      el: '#app',
      data: {
        arr1: [1,2,3,4],
        arr2: [
          {name: '接化发', price: 100},
          {name: '窝里斗', price: 150},
          {name: '没有闪', price: 200},
          {name: '大意了', price: 250},
          {name: '耗子尾汁', price: 1000}
        ],
        obj1: {
          name: 'Tom',
          age: 18,
          job: 'student',
          sex: 'nan'
        }
      },
      methods: {
        change1() {
          // this.arr1[2] = 3.5; // 错误的方法
          // 原生js的方法
          this.arr1.splice(2, 1, 3.5);
        },
        change2() {
          // this.arr2[4] = {name: '耗子尾汁pro', price: 0}; // 错误的方法
          // vue提供的方法
          // this.$set(this.arr2, 4, {name: '耗子尾汁pro', price: 0});
          Vue.set(this.arr2, 4, {name: '耗子尾汁pro', price: 0})
        },
        changeLength() {
          // this.arr1.length = 1; // 错误的方法
          this.arr1.splice(2); // 正确的方法
          console.log(this.arr1);
        },
        add() {
          // this.obj1.home = 'henan'; // 错误的方法
          this.$set(this.obj1, 'home', 'henan'); // 正确的方法
        },
        change3() {
          // 修改正常使用
          this.obj1.name = 'Jack';
        },
        del() {
          // 删除对象属性
          // delete this.obj1.name;// 错误的方法
          this.$delete(this.obj1, 'name'); // 正确的方法
        }
      },
    })
  </script>
</body>
</html>